package com.hspedu.set_;

import java.util.Comparator;
import java.util.TreeSet;

public class TreeSet_ {
    public static void main(String[] args) {

        //1. 当使用无参构造器, 创建TreeSet时, 仍然是无序的
        //2. 如果希望添加的元素 按照 字符串大小来排序
        //3. 使用TreeSet 提供的一个构造器, 可以传入一个比较器(匿名内部类), 指定排序规则
        //
        //TreeSet treeSet = new TreeSet();
        TreeSet treeSet = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                //使用字符串的compareTo方法进行字符串大小比较
//                return ((String)o1).compareTo((String) o2);
                return ((String) o1).length() - ((String) o2).length();
            }
        });
        treeSet.add("tom");
        treeSet.add("jack");
        treeSet.add("sp");
        treeSet.add("a");
        treeSet.add("abc");//添加不进去, 因为自定义的比较规则是比较字符串的长度, 长度一样的会被认为是同样的元素

        System.out.println("treeSet = " + treeSet);

        /*1. 构造器把传入的比较器对象, 付给了TreeSet的底层的TreeMap的属性this.comparator
        public TreeSet(Comparator<? super E> comparator) {
            this(new TreeMap<>(comparator));
        }
         */
    }
}
